perm filename LIS1.PPL[VLI,LSP] blob
sn#382014 filedate 1978-09-08 generic text, type T, neo UTF8
(TML)
newtypes [ ``list = . + clist`` ;
``clist = atom # list`` ] ;;
map newconstant
[ `NIL` , ":list"
; `NULL` , ":list->tr"
; `HEAD` , ":list->atom"
; `TAIL` , ":list->list"
; `CONS` , ":atom->list->list"
; `APPEND` , ":list->list->list"
; `LISTFUN` , ":(list->list) -> (list->list)"
] ;;
let defNIL = ASSUME "NIL == INL()"
;; let defNULL = ASSUME "NULL == ISL"
;; let defHEAD = ASSUME "HEAD == \L. FST(OUTR L)"
;; let defTAIL = ASSUME "TAIL == \L. SND(OUTR L)"
;; let defCONS = ASSUME "CONS == \A L. INR(A,L)"
;; let defAPPEND = ASSUME "APPEND == FIX \F. \L L' .
NULL L => L' | CONS(HEAD L)(F(TAIL L)L')"
;; let defLISTFUN = ASSUME "LISTFUN ==
\G.\L. NULL L => NIL | CONS(HEAD L)(G(TAIL L))"
;;
let LISTAX = ASSUME "!L. FIX LISTFUN L == L" ;;